/**
 * a+(隐式)和前面的String(a)(显式)之间有一个细微的差别需要注意。
	ToPrimitive抽象操作规则，a+""会对a调用value0f()方法，然后通过ToString抽象操作将返回值转换为字符串。
	而String(a)则是直接调用ToString()。
 */
var a = {
	valueOf: function() {
		return 42;
	},
	toString: function() {
		return 4;
	}
}

a + ''; // "42"
String(a); // "4"